package com.cari.oa.domain;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.validator.constraints.Length;

/**
* Title: ReqEntity
* Description:需求实体
* Company: cari 
* @author  hjx 
* @date    2013-3-11
*/
@Entity
@Table(name = "T_REQ")
public class ReqEntity implements Serializable {

    private static final long serialVersionUID = 8775225809962095596L;
    @Id
    @Length(max = 32)
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
	private String id;            //id
    
    @NotNull(message = "标题不能为空")
    @Length(max = 100, message = "标题长度要小于100个字符")
    @Column(name="TITLE")
	private String title;         //标题
    
    @Column(name="INITIATOR")
	private String initiator;     //发起人
    
    @Column(name="CREATETIME")
	private Date createTime = new Date();      //创建时间
   
    @NotNull(message = "需求内容不能为空")
    @Column(name="CONTENT")
	private String content;       //需求内容
    
    @Column(name="REQTYPE")
	private String reqType;       //需求类型
    
    @Column(name="STATUS")
	private String status;        //状态
    
    @Column(name="EXP_PER_TIME")
	private Date expPerTime;      //期望完成时间
    
    @Column(name="PRE_STA_TIME")
	private Date perStaTime;      //预期开始时间
	
    @Column(name="PRE_END_TIME")
    private Date perEndTime;      //预期结束时间
	
    @Column(name="FINISH_TIME")
    private Date finishTime;      //结束时间
	
    @Column(name="NEW_REPLY")
    private Date newRepTime;      //最新回复时间
	
    @Column(name="REVOKE_REASON")
    private String revokeReason;  //撤销理由
	
    @Column(name="REFUSE_REASON")
    private String refuseReason;  //拒绝理由
	
    @Column(name="IN_HAND_DESC")
    private String inHangDesc;    //处理中描述
	
    @Column(name="HANDLED_DESC")
    private String handedDesc;    //已处理描述
	
    @Column(name="FINISH_DESC")
    private String finishDesc;    //完成描述
    
    @Column(name="CNNAME")
    private String cnName;        //中文名
    
    @Transient
    private String principal;     //暂时用于存储负责负责人有可能多个人
    
    @Transient
    private String typeName;
    
    @Column(name="PROJECT")
    private String project;       //所属项目
   
    @Column(name="NOTPASS")
    private String notPass;       //未通过审核描述
    
    @Column(name="STARTSTATUS")   //市场人员的提出需求时的初始状态
    private String startStatus;

  
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getInitiator() {
		return initiator;
	}

	public void setInitiator(String initiator) {
		this.initiator = initiator;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getReqType() {
		return reqType;
	}

	public void setReqType(String reqType) {
		this.reqType = reqType;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public Date getExpPerTime() {
		return expPerTime;
	}

	public void setExpPerTime(Date expPerTime) {
		this.expPerTime = expPerTime;
	}

	public Date getPerStaTime() {
		return perStaTime;
	}

	public void setPerStaTime(Date perStaTime) {
		this.perStaTime = perStaTime;
	}

	public Date getPerEndTime() {
		return perEndTime;
	}

	public void setPerEndTime(Date perEndTime) {
		this.perEndTime = perEndTime;
	}

	public Date getFinishTime() {
		return finishTime;
	}

	public void setFinishTime(Date finishTime) {
		this.finishTime = finishTime;
	}

	public Date getNewRepTime() {
		return newRepTime;
	}

	public void setNewRepTime(Date newRepTime) {
		this.newRepTime = newRepTime;
	}

	public String getRevokeReason() {
		return revokeReason;
	}

	public void setRevokeReason(String revokeReason) {
		this.revokeReason = revokeReason;
	}

	public String getRefuseReason() {
		return refuseReason;
	}

	public void setRefuseReason(String refuseReason) {
		this.refuseReason = refuseReason;
	}

	public String getInHangDesc() {
		return inHangDesc;
	}

	public void setInHangDesc(String inHangDesc) {
		this.inHangDesc = inHangDesc;
	}

	public String getFinishDesc() {
		return finishDesc;
	}

	public void setFinishDesc(String finishDesc) {
		this.finishDesc = finishDesc;
	}

	public String getHandedDesc() {
		return handedDesc;
	}

	public void setHandedDesc(String handedDesc) {
		this.handedDesc = handedDesc;
	}

	public String getPrincipal() {
		return principal;
	}

	public void setPrincipal(String principal) {
		this.principal = principal;
	}

	public String getTypeName() {
		return typeName;
	}

	public void setTypeName(String typeName) {
		this.typeName = typeName;
	}

	public String getCnName() {
		return cnName;
	}

	public void setCnName(String cnName) {
		this.cnName = cnName;
	}

	public String getProject() {
		return project;
	}

	public void setProject(String project) {
		this.project = project;
	}

	public String getNotPass() {
		return notPass;
	}

	public void setNotPass(String notPass) {
		this.notPass = notPass;
	}

	public String getStartStatus() {
		return startStatus;
	}

	public void setStartStatus(String startStatus) {
		this.startStatus = startStatus;
	}

}
